package com.deer.wms.base.system.service.bill;

import com.deer.wms.base.system.model.bill.*;
import com.deer.wms.base.system.model.zh.WorkTasks;
import com.deer.wms.common.core.service.Service;

import java.util.List;

public interface BillInSapService  extends Service<BillInSap, Integer> {
    /**
     *查询SAP单据信息
     * @author 李帅辰
     * @date 2021/6/21 16:51
     * @return java.util.List<com.deer.wms.base.system.model.bill.BillInSapDto>
     */
    List<BillInSapDto> findBillInSapDtoList(BillInSapCriteria billInSapCriteria);
    /*SAP入库明细列表*/
    List<BillInSapDetailDto> findBillInSapDetailList(BillInSapDetailDto billInSapDetailDto);
    /*SAP入库单列表*/
    List<BillInSap> findBillInSapList(BillInSap billInSap);



    boolean findBillInSapByvBELN(String vBELN);


    /**
     * 通过ID查询
     * @param billInSapId
     * @return
     */
    BillInSapDto findBillInSapDtoById(Integer billInSapId);

    int updateBillInSap(BillInSap billInSap);

    /*根据id找sap单*/
    BillInSapDto findBillInSapByBillInSapId(Integer billInSapId);
    /*根据id找sap单明细*/
    List<BillInSapDetailDto> findBillInSapDetailByBillInSapId(Integer billInSapId);
    /*改变SAP已入库数量 (标签重量)*/
    void updateBillInSapDetail(WorkTasks workTasks);
    /*更改sap明细收货状态*/
    void updateBillInSapDetailReceiptState(BillInSapDetail billInSapDetail);
    /*sap单中未完成明细条数*/
    int findBillInSapOver(BillInSapDetail billInSapDetail);
    /*新增SAP入库单*/
    void insertBillInSap(BillInSapDto billInSapDto);
    /*新增SAP明细*/
    void insertBillInSapDetail(BillInSapDto billInSapDto);
    /*强制过账*/
    void postingSap(int billInSapId);
    void postingSapDetail(int billInSapId);
    void postingMaster(int billInSapId);
    /*根据id查sap明细*/
    List<BillInSapDetail> findSapDetailById(Integer billInSapDetailId);
    /*根据billId查SAP明细*/
    List<BillInSapDto> findBillInSapDetailById(Integer billId);
    /*SAP入库过账列表*/
    BillInSapDetailDto findBillInSapDetailVo(Integer id);
    /*改变明细过账状态*/
    void updateDetailCarryStateById(Integer id);
    /*查询未过账明细数量*/
    int selectCarryStateCount(Integer id);
    /*改变sap过账状态*/
    void updateBillInSapState3(Integer id);
    void updateBillInSapState2(Integer id);
    /*查未审核id*/
    List<Integer> findStateDetailById(int billInSapId);

    void updateBillInMasterState3(int id);
    void updateBillInMasterState2(int id);
    /*删sap单*/
    int deleteSapByIds(Integer id);
    /*删明细*/
    int deleteSapDetailByIds(Integer id);

    /*删入库作业/明细/托盘/托盘明细*/
    int delTaskWork(Integer id);
    int delDetail(Integer id);
    int delBox(Integer id);
    int delBoxDetail(Integer id);
}
